/**
 * 用户身份认证工具
 */

const TOKEN_KEY = 'auth_token'
const USER_INFO_KEY = 'user_info'

/**
 * 保存Token
 * @param {string} token JWT Token
 */
export function setToken(token) {
    localStorage.setItem(TOKEN_KEY, token)
}

/**
 * 获取Token
 * @returns {string|null} JWT Token
 */
export function getToken() {
    return localStorage.getItem(TOKEN_KEY)
}

/**
 * 移除Token
 */
export function removeToken() {
    localStorage.removeItem(TOKEN_KEY)
    localStorage.removeItem(USER_INFO_KEY)
}

/**
 * 保存用户信息
 * @param {Object} userInfo 用户信息
 */
export function setUserInfo(userInfo) {
    localStorage.setItem(USER_INFO_KEY, JSON.stringify(userInfo))
}

/**
 * 获取用户信息
 * @returns {Object|null} 用户信息
 */
export function getUserInfo() {
    const userInfo = localStorage.getItem(USER_INFO_KEY)
    return userInfo ? JSON.parse(userInfo) : null
}

/**
 * 检查是否已登录
 * @returns {boolean} 是否已登录
 */
export function isLoggedIn() {
    return !!getToken()
}

/**
 * 解析JWT Token获取用户ID
 * @returns {number|null} 用户ID
 */
export function getUserId() {
    const token = getToken()
    if (!token) return null
    
    try {
        // 简单解析JWT payload（实际项目中应该验证签名）
        const payload = JSON.parse(atob(token.split('.')[1]))
        return payload.claims?.userId || null
    } catch (error) {
        console.error('解析Token失败:', error)
        return null
    }
}

/**
 * 登出
 */
export function logout() {
    removeToken()
    // 可以在这里添加其他登出逻辑，比如跳转到登录页
    window.location.href = '/login'
}
